非 AWS Organizations 環境の AWS アカウントに Entra ID ユーザーでアクセスする
Microsoft Entra ID (旧 Azure AD) から 非 AWS Organizations 環境の AWS アカウントにアクセスする設定を試してみました。AWS IAM Identity Center を利用できない環境でも設定できます。
構成イメージ図です。AWS アカウント側に IAM ID プロバイダを作成して Entra ID と SAML で連携します。
Entra ID から AWS アカウントにアクセスするときは、関連付けられている IAM ロールから選択してアクセスします。
以前にも同じ内容のブログがありましたが、Azure AD から Entra ID に変わっていることもあり、改めて試してみました。結論としては、一部の画面に違いがあるものの手順としては同じでした。
設定
Microsoft Entra ID から AWS アカウントにアクセスする設定手順は次の Microsoft ドキュメントに記載されています。この手順をベースに設定してみました。
チュートリアル: Microsoft Entra SSO と AWS Single-Account Access の統合 - Microsoft Entra ID | Microsoft Learn
本ブログにおける設定の流れは次の通りです。
- Entra ID でエンタープライズアプリケーションを作成
- AWS で ID プロバイダ・IAM ロールを作成
- AWS で IAM ユーザー(アクセスキー)を作成
- Entra ID でプロビジョニングを設定
- Entra ID でユーザーと AWS IAM ロールを関連付け
Entra ID でエンタープライズアプリケーションを作成
Entra ID の設定は Azure 上でもできますが、今回は Entra 管理センター から設定してみます。
始めに、エンタープライズアプリケーションを作成します。
ギャラリーから「AWS Single-Account Access」を選択します。
任意の名前をつけて「作成」を実行します。
作成したエンタープライズアプリケーションの「シングルサインオン」の設定から「SAML」を選択します。
この時点でテストをするか問われることgありますが、まだ設定できていないため後で実施することにしています。
次に、「基本的な SAML 構成」を編集します。「識別子」と「応答 URL の追加」に下記の URL を入力します(今回の場合は始めから入力されていたので、そのまま利用しました)。入力後は「保管」を忘れずにクリックします。
https://signin.aws.amazon.com/saml
SAML 構成の設定後に「フェデレーション メタデータ XML」をダウンロードします。このメタデータを AWS 側の設定で利用します。
エンタープライズアプリケーションの設定はまだ終わっていませんが、SAML 連携の設定をするために先に AWS 側の設定に移ります。
AWS で ID プロバイダ・IAM ロールを作成
Entra ID 側でダウンロードしたメタデータを利用して AWS 側で ID プロバイダを設定し、Entra ID ユーザーが利用できる IAM ロールの設定まで実施します。
AWS IAM サービスから ID プロバイダを作成します。
「SAML」を選択して「プロバイダ名」を入力し、先程ダウンロードした Entra ID エンタープライズアプリケーションのフェデレーションメタデータをアップロードします。その後、「プロバイダを追加」を実行します。
作成した ID プロバイダを選択して「ロールの割り当て」から関連付ける IAM ロールを新しく作成します(既存のロールを関連付けることもできます)。
IAM ロールの設定では信頼されたエンティティとして「SAML 2.0 フェデレーション」を選択し、今回は「プログラムと AWS マネジメントコンソールへのアクセスを許可する」を選択します。
今回は次の 2 種類のロールを作成してみました。
項目 | IAM ロール 1 | IAM ロール 2 |
---|---|---|
IAM ロール名 | administrator-access-role | read-only-role |
許可ポリシー | AdministratorAccess (AWS 管理ポリシー) | ReadOnlyAccess (AWS 管理ポリシー) |
信頼ポリシーの設定は自動で次の通り設定されていました。作成した ID プロバイダmicrosoft-entra-id
が信頼されていることが分かります。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:saml-provider/microsoft-entra-id" }, "Action": "sts:AssumeRoleWithSAML", "Condition": { "StringEquals": { "SAML:aud": "https://signin.aws.amazon.com/saml" } } } ] }
AWS で IAM ユーザー(アクセスキー)を作成
次に、Entra ID のプロビジョニング設定のために、IAM ロールのリスト権限を与えるアクセスキー作成します。
冒頭で紹介した下記のページに掲載されている IAM ユーザーとポリシーを作成します。今回はユーザー名とポリシー名も下記ドキュメントと同じ名前にしました。
チュートリアル: Microsoft Entra SSO と AWS Single-Account Access の統合 - Microsoft Entra ID | Microsoft Learn
IAM ポリシーの作成です。次の設定で作成します。
項目 | 設定値 |
---|---|
IAM ポリシー名 | AzureAD_SSOUserRole_Policy |
ポリシー | 下記参照 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListRoles" ], "Resource": "*" } ] }
IAM ユーザーの作成です。ユーザー名 AzureADRoleManager
としています。
先ほど作成した IAM ロールのリスト権限を持つポリシーAzureAD_SSOUserRole_Policy
をアタッチします。
最後に設定内容を確認して「ユーザーの作成」を実行します。
作成後に、アクセスキーを発行します。冒頭で参照しているドキュメントではコンソールアクセスを有効にしているのですが、Entra ID 側の設定ではアクセスキーとシークレットアクセスキーの入力なので、おそらくアクセスキーの発行が必要な手順と思われます。
発行理由と説明タグ値(オプション)は何を選択・入力してもよいので、次に進み、アクセスキーとシークレットアクセスキーを確認してメモします。Entra ID の設定で利用します。
以降は、Entra ID のエンタープライズアプリケーション設定に戻ります。
Entra ID でプロビジョニングを設定
先ほどメモしたアクセスキーとシークレットアクセスキーを用いてプロビジョニングの設定をします。
エンタープライズアプリケーションの設定から「プロビジョニング」を選択します。
プロビジョニングの設定画面に遷移したら「プロビジョニング」メニューからプロビジョニングモードを自動
に変更して、AWS のアクセスキーとシークレットアクセスキーと入力します。
- clientsecret : アクセスキー
- シークレットトークン : シークレットアクセスキー
テスト接続をしてエラーがなければ「保存」を実行します。
保存後に、リロード等で再度プロビジョニングメニューを開くと「プロビジョニング状態」が表示されるためオン
に変更して再度「保存」を実行します。
しばらく待つと、概要メニューから AWS の IAM ロール数を確認できます。本来は AWS 側で作成した IAM ロール 2 個のみですが、今回の環境は本ブログ以外の検証で別のロールも作成していたため、3 個の表示となっています。また、プロビジョニング間隔が 40 分であることも分かります。
Entra ID でユーザーと AWS IAM ロールを関連付け
最後に、Entra ID ユーザー/グループと AWS IAM ロールの関連付けを実施します。
エンタープライズアプリケーションのユーザーとグループメニューから「ユーザーまたはグループの追加」を実行します。
AWS へのアクセスを許可したいユーザーまたはグループを選択して、与える権限(AWS IAM ロール)を選択します。下記画像では権限はadministrator-access-role
を選択しています。なお、今回の環境は P1/P2 ライセンスがないため、グループは選択できないことからユーザーを選択しています。
同様の手順でread-only-role
も割り当てた後の画面です。1 人のユーザーに 2 個のロールを関連付けています。
以上で設定は終わりです。
アクセステスト
Entra ID ユーザーの認証情報を使って AWS のマネジメントコンソールにアクセスしてみます。
Entra ID の マイアプリポータル から作成したエンタープライズアプリケーションAWS Account Access
を選択します。
AWS 側の IAM ロールを選択する画面となるため任意のロールを選択します。
AWS マネジメントコンソールにアクセスできました。
想定通り、Entra ID ユーザーで AWS マネジメントコンソールにアクセスできました。
さいごに
Microsoft Entra ID (旧 Azure AD) から 非 AWS Organizations 環境の AWS アカウントにアクセスする設定を試してみました。
以前にも Azure AD からアクセスする設定を試してみたブロブがありましたが、Entra ID に変わったことから改めて試してみました。設定手順は変わっておらず、画面が変わっているだけであることが確認できました。
以上、このブログがどなたかのご参考になれば幸いです。